import copy

# 原始数据
origin_data = [[1, 2], {"name": "Tom", "chars": ["A", "B"]}]
# 使用对象的copy()方法得到浅拷贝对象
copy_data1 = origin_data.copy()
# 使用工厂方法获取浅拷贝对象
copy_data2 = list(origin_data)
# 使用切片方式获取浅拷贝对象
copy_data3 = origin_data[:]
# 使用 copy模块中的copy方法获取浅拷贝对象
copy_data4 = copy.copy(origin_data)

# 使用 copy模块中的deepcopy方法获取深拷贝对象
deep_copy_data = copy.deepcopy(origin_data)

# 打印所有的数据
print(origin_data)
print(copy_data1)
print(copy_data2)
print(copy_data3)
print(copy_data4)

# 打印所有数据地址
print(id(origin_data))
print(id(copy_data1))
print(id(copy_data2))
print(id(copy_data3))
print(id(copy_data4))

# 通过某一个数据修改内部数据的值
copy_data1[1]["chars"][1] = "BB"

# 打印所有的数据
print(origin_data)  # 浅拷贝全改变(修改原始内存地址)
print(copy_data1)

print(deep_copy_data)   # 深拷贝不改变



